package com.cameron.serviceedu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cameron.serviceedu.entity.EduCourse;
import com.cameron.serviceedu.entity.dto.CourseDto;
import com.cameron.serviceedu.entity.dto.front.CourseInfoVo;
import com.cameron.serviceedu.entity.viewobject.CourseCondition;
import com.cameron.serviceedu.entity.viewobject.CourseVo;
import com.cameron.utils.Result;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author cameron
 * @since 2022-06-17
 */
public interface EduCourseService extends IService<EduCourse> {

    /**
     *
     * @param courseDto
     * @return
     */
    Result saveOrUpdate(CourseDto courseDto);

    /**
     * 通过课程id获取课程信息
     * @param courseId 课程id
     * @return
     */
    Result getCourse(String courseId);

    /**
     * 发布课程（修改课程状态为发布）
     * @param courseId 课程id
     * @return
     */
    Result publish(String courseId);

    /**
     * 条件分页查询
     * @param condition 封装数据
     * @param currentPage 当前页数
     * @param size      页面显示数据条数
     * @return
     */
    Result pageByConditions(CourseCondition condition, int currentPage, int size);

    Result removeCourseById(String courseId);

    /**
     *通过课程id查询 课程相关的信息 包括 讲师姓名，讲师头像，描述信息，章节信息等
     * @param courseId 课程id
     * @return  返回前端viewObject
     */
    CourseInfoVo getCourseInfo(String courseId);

    /**
     * 通过课程id 和用户id 生成订单信息
     * @param courseId
     * @return
     */

    CourseVo getCourseDetail(String courseId);

    void updateCourse(CourseVo courseVo);

    List<EduCourse> getCourseLikeName(String courseName);

    Map<String,Object> getCourseList(int currentPage, int pageSize,
                                     com.cameron.serviceedu.entity.dto.front.CourseDto courseDto);
}
